package l.l.w.practice.小易喜欢的数列;

import java.util.LinkedList;
import java.util.Scanner;

/**
 * Created by llw on 2017/10/9.
 */
public class 小易喜欢的数列 {
    int count = 0;
    LinkedList<Integer> list = new LinkedList<Integer>();

    public void getNum(int n, int k,int[] a, int num){
        if(n == 0){
            count++;
            return;
        }
        for(int j = 1; j <= k; ++j){
            if(a[num-1] ==-1 || (a[n] <= j || a[n] % j!=0)) {
                a[n-1] = j;
                getNum(n - 1, k,a,num);
                a[n-1]=-1;
            }
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        int[] a = new int[n];
        for(int i =0; i < n;++i){
            a[i]=-1;
        }
        小易喜欢的数列 obj = new 小易喜欢的数列();
        obj.getNum(n,k,a,n);
        System.out.println(obj.count % 1000000007);

    }
//    public void getNum(int n, int k,int[] a){
//        if(n==0){
//            num++;
////           if(isSatifi(list)){
////               num++;
////           }
//            return;
//        }
//        for(int j = 1; j <= k; ++j){
//            if(list.size() < 1 || (list.getLast() <= j || list.getLast() % j!=0)) {
//                a[n-1] = j;
//                getNum(n - 1, k,a);
//                list.removeLast();
//            }
//        }
//
//    }

//    private boolean isSatifi(LinkedList<Integer> list) {
//        for(int i = 0; i < list.size()-1; ++i){
//            if(list.get(i) <= list.get(i+1) || list.get(i)%list.get(i+1) != 0){
//
//            }else{
//                return  false;
//            }
//        }
//        return true;
//    }
}
